//1.引入模块
const express = require('express');
const expressArtTemplate = require('express-art-template');
const fs = require('fs');
const querystring = require('querystring');
const bodyParser = require('body-parser');
//2.创建app对象
let app = express();
//3.配置框架
app.engine('html', expressArtTemplate);
app.use('/public', express.static('public'));
app.use(bodyParser.json()); 					    //解析JSON格式数据（application/json）     解析后放到req对象的body属性中
app.use(bodyParser.urlencoded({ extended: false }));//解析文本格式数据（application/x-www-form-urlencoded）
//4.路由
// 学生列表
app.get('/', function (req, res) {
    fs.readFile('./db.json', 'utf8', function (err, data) {
        if (err) res.send('xxxxxxxxxxxxxxxxxxxxxxxxx');
        data = JSON.parse(data);
        res.render('index.html', {
            stus: data.stus
        })
    })
});

// 学生添加页
app.get('/post', function (req, res) {
   res.render('post.html')
});

// 手动封装post
/*app.post('/stu/create', function (req, res) {
   let data = '';
   let datas = '';
   req.on('data', function (val) {
       data +=val
   });
   req.on('end', function () {
        data = querystring.parse(data);
       console.log(data);
       datas = JSON.parse(JSON.stringify(data));
       res.send(data);
       // 放这里
   });
   console.log('44444444444444444');
   // 把data写外面就打印不出来，必须放在req中,因为req监听的是一个异步回调，先打印此处，在执行end里面的
});*/


// 添加功能
app.post('/stu/create', function (req, res) {
    let datas = req.body;
    fs.readFile('./db.json', 'utf8', function (err, data) {
        if (err) res.send('ERROR');
        let oldStus = JSON.parse(data)['stus'];
        oldStus.push({
            id: oldStus[oldStus.length - 1].id + 1,
            name: datas.name,
            sex: datas.sex,
            age: datas.age,
            pwd: datas.pwd,
            create_at: new Date()
        });
        let newStus = JSON.stringify({stus: oldStus});
        fs.writeFile('./db.json', newStus, function (err) {
            if (err) res.send('ERROR');
        });
        res.redirect('/');
    })
});

//学生删除
app.get('/stu/delete/:id', function (req, res) {
    //1.获取地址栏数据
   let id = req.params.id;
    //2.操作数据
   fs.readFile('./db.json', 'utf8', function (err, data) {
       if (err) res.send('FS ERROR');
       data = JSON.parse(data).stus;
       for (let i = 0; i < data.length; ++i) {
           if (data[i].id === parseInt(id)) {
               data.splice(i,1);
               break
           }
       }
       let newData = JSON.stringify({stus: data});
       fs.writeFile('./db.json', newData, function (err) {
           if (err) res.send('WF ERROR')
           res.redirect('/')
       });
   })
});

////学生修改-视图
app.get('/stu/edit/:id', function (req, res) {
    //1.获取地址栏数据
    let id = req.params.id;
    //2.操作数据
    fs.readFile('./db.json', 'utf8', function (err, data) {
        if (err) res.send('FS ERROR');
        data = JSON.parse(data).stus;
        let detail = {};
        for (let i = 0; i < data.length; ++i) {
            if (data[i].id === parseInt(id)) {
                detail = data[i];
                break
            }
        }
        res.render('post.html')
    })
});

//

//5.启动服务
app.listen(8080);
